import { IPSModelObject } from '../../ipsmodel-object';
import { IPSCodeList } from '../../codelist/ipscode-list';
import { IPSDEDBTable } from '../../database/ipsdedbtable';
import { IPSDEFDTColumn } from '../../database/ipsdefdtcolumn';
import { IPSSysDBColumn } from '../../database/ipssys-dbcolumn';
import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEFSearchMode } from './ipsdefsearch-mode';
import { IPSDEFUIMode } from './ipsdefuimode';
import { IPSDEFieldBase } from './ipsdefield-base';
import { IPSDEFValueRule } from './valuerule/ipsdefvalue-rule';
import { IPSDEFLogic } from '../logic/ipsdeflogic';
import { IPSLanguageRes } from '../../res/ipslanguage-res';
import { IPSSysSequence } from '../../res/ipssys-sequence';
import { IPSSysTranslator } from '../../res/ipssys-translator';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEField
 */
export interface IPSDEField extends IPSModelObject, IPSDataEntityObject, IPSDEFieldBase {
  /**
   * 数据库列对象集合
   *
   * @type {IPSDEFDTColumn[]}
   */
  getAllPSDEFDTColumns(): IPSDEFDTColumn[] | null;

  /**
   * 数据库列对象集合
   *
   * @type {IPSDEFDTColumn[]}
   */
  get allPSDEFDTColumns(): IPSDEFDTColumn[] | null;

  findPSDEFDTColumn(objKey: any): IPSDEFDTColumn | null;

  /**
   * 属性搜索模式集合
   *
   * @type {IPSDEFSearchMode[]}
   */
  getAllPSDEFSearchModes(): IPSDEFSearchMode[] | null;

  /**
   * 属性搜索模式集合
   *
   * @type {IPSDEFSearchMode[]}
   */
  get allPSDEFSearchModes(): IPSDEFSearchMode[] | null;

  findPSDEFSearchMode(objKey: any): IPSDEFSearchMode | null;

  /**
   * 属性界面模式集合
   *
   * @type {IPSDEFUIMode[]}
   */
  getAllPSDEFUIModes(): IPSDEFUIMode[] | null;

  /**
   * 属性界面模式集合
   *
   * @type {IPSDEFUIMode[]}
   */
  get allPSDEFUIModes(): IPSDEFUIMode[] | null;

  findPSDEFUIMode(objKey: any): IPSDEFUIMode | null;

  /**
   * 属性值规则集合
   *
   * @type {IPSDEFValueRule[]}
   */
  getAllPSDEFValueRules(): IPSDEFValueRule[] | null;

  /**
   * 属性值规则集合
   *
   * @type {IPSDEFValueRule[]}
   */
  get allPSDEFValueRules(): IPSDEFValueRule[] | null;

  findPSDEFValueRule(objKey: any): IPSDEFValueRule | null;

  /**
   * 审计格式
   * @type {string}
   */
  auditInfoFormat: string;

  /**
   * 业务标记
   * @description 值模式 [实体属性业务标记] {WFINSTANCEID：流程实例标识、 WFSTEP：流程实例步骤值、 WFUSERSTATE：流程实例业务状态、 WFVERSION：流程实例版本、 WFSTATE：流程实例状态、 BEGINTIME：开始时间、 ENDTIME：结束时间、 DURATION：持续时间、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4、 USER5：用户自定义5、 USER6：用户自定义6、 USER7：用户自定义7、 USER8：用户自定义8、 USER9：用户自定义9 }
   * @type {( string | 'WFINSTANCEID' | 'WFSTEP' | 'WFUSERSTATE' | 'WFVERSION' | 'WFSTATE' | 'BEGINTIME' | 'ENDTIME' | 'DURATION' | 'USER' | 'USER2' | 'USER3' | 'USER4' | 'USER5' | 'USER6' | 'USER7' | 'USER8' | 'USER9')}
   */
  bizTag:
    | string
    | 'WFINSTANCEID'
    | 'WFSTEP'
    | 'WFUSERSTATE'
    | 'WFVERSION'
    | 'WFSTATE'
    | 'BEGINTIME'
    | 'ENDTIME'
    | 'DURATION'
    | 'USER'
    | 'USER2'
    | 'USER3'
    | 'USER4'
    | 'USER5'
    | 'USER6'
    | 'USER7'
    | 'USER8'
    | 'USER9';

  /**
   * 值检查逻辑
   *
   * @type {IPSDEFLogic}
   */
  getCheckPSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值检查逻辑
   *
   * @type {IPSDEFLogic}
   */
  get checkPSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值检查逻辑（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getCheckPSDEFLogicMust(): IPSDEFLogic;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 值计算表达式
   * @type {string}
   */
  computeExpression: string;

  /**
   * 值计算逻辑
   *
   * @type {IPSDEFLogic}
   */
  getComputePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值计算逻辑
   *
   * @type {IPSDEFLogic}
   */
  get computePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值计算逻辑（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getComputePSDEFLogicMust(): IPSDEFLogic;

  /**
   * 属性类型
   * @description 值模式 [实体属性类型] {1：物理字段[来自当前实体物理表字段]、 2：逻辑字段[来自计算式]、 3：链接字段[来自关系实体字段]、 4：扩展物理字段[来自动态存储实体物理表字段]、 5：应用界面字段[无存储] }
   * @type {( number | 1 | 2 | 3 | 4 | 5)}
   */
  dEFType: number | 1 | 2 | 3 | 4 | 5;

  /**
   * 主状态属性模式
   * @description 值模式 [属性实体主状态值] {STATE1：状态属性1、 STATE2：状态属性2、 STATE3：状态属性3 }
   * @type {( string | 'STATE1' | 'STATE2' | 'STATE3')}
   */
  dEMSFieldMode: string | 'STATE1' | 'STATE2' | 'STATE3';

  /**
   * 数据类型
   * @description 值模式 [云实体属性数据类型（静态）（全部）] {ACID：自增标识，整数类型，用户不可见、 BIGINT：大整型、 CODELISTTEXT：选择项文本、 CURRENCY：货币、 CURRENCYUNIT：货币单位、 DATE：日期型、 DATETIME：日期时间型、 DATETIME_BIRTHDAY：出生日期、 DECIMAL：数值、 BIGDECIMAL：大数值、 FLOAT：浮点、 GUID：全局唯一标识，文本类型，用户不可见、 HTMLTEXT：HTML文本，没有长度限制、 INHERIT：继承属性、 INT：整型、 LONGTEXT：长文本，没有长度限制、 LONGTEXT_1000：长文本，长度1000、 NBID：数字串业务标识，数字类型，用户可见、 NMCODELIST：多项选择(数值)、 NSCODELIST：单项选择(数值)、 PICKUP：外键值、 PICKUPDATA：外键值附加数据、 PICKUPTEXT：外键值文本、 SBID：字符串业务标识，文本类型，用户可见、 SMCODELIST：多项选择(文本值)、 SSCODELIST：单项选择(文本值)、 TEXT：文本，可指定长度、 TEXT_EMAIL：电子邮件、 TIME：时间型、 TRUEFALSE：真假逻辑、 VARBINARY：二进制流，没有长度限制、 WFSTATE：工作流处理状态、 YESNO：是否逻辑、 ONE2MANYDATA：一对多关系数据集合、 ONE2MANYDATA_MAP：一对多关系数据集合（MAP）、 PICKUPOBJECT：外键值对象、 ONE2ONEDATA：一对一关系数据对象、 FILE：文件、 ONE2MANYOBJ：一对多动态对象、 ONE2MANYOBJ_MAP：一对多动态对象（MAP）、 ONE2ONEOBJ：一对一动态对象、 FILELIST：文件列表、 LONGFILELIST：文件列表，没有数量限制、 PICTURE：图片、 PICTURELIST：图片列表、 LONGPICTURELIST：图片列表，没有数量限制、 TEXTARRAY：文本数组、 TEXTARRAY2：文本数组（没有长度限制）、 INTARRAY：整形数组、 INTARRAY2：整形数组（没有长度限制）、 BIGINTARRAY：大整形数组、 BIGINTARRAY2：大整形数组（没有长度限制）、 FLOATARRAY：浮点数组、 FLOATARRAY2：浮点数组（没有长度限制）、 DECIMALARRAY：数值数组、 DECIMALARRAY2：数值数组（没有长度限制） }
   * @type {( string | 'ACID' | 'BIGINT' | 'CODELISTTEXT' | 'CURRENCY' | 'CURRENCYUNIT' | 'DATE' | 'DATETIME' | 'DATETIME_BIRTHDAY' | 'DECIMAL' | 'BIGDECIMAL' | 'FLOAT' | 'GUID' | 'HTMLTEXT' | 'INHERIT' | 'INT' | 'LONGTEXT' | 'LONGTEXT_1000' | 'NBID' | 'NMCODELIST' | 'NSCODELIST' | 'PICKUP' | 'PICKUPDATA' | 'PICKUPTEXT' | 'SBID' | 'SMCODELIST' | 'SSCODELIST' | 'TEXT' | 'TEXT_EMAIL' | 'TIME' | 'TRUEFALSE' | 'VARBINARY' | 'WFSTATE' | 'YESNO' | 'ONE2MANYDATA' | 'ONE2MANYDATA_MAP' | 'PICKUPOBJECT' | 'ONE2ONEDATA' | 'FILE' | 'ONE2MANYOBJ' | 'ONE2MANYOBJ_MAP' | 'ONE2ONEOBJ' | 'FILELIST' | 'LONGFILELIST' | 'PICTURE' | 'PICTURELIST' | 'LONGPICTURELIST' | 'TEXTARRAY' | 'TEXTARRAY2' | 'INTARRAY' | 'INTARRAY2' | 'BIGINTARRAY' | 'BIGINTARRAY2' | 'FLOATARRAY' | 'FLOATARRAY2' | 'DECIMALARRAY' | 'DECIMALARRAY2')}
   */
  dataType:
    | string
    | 'ACID'
    | 'BIGINT'
    | 'CODELISTTEXT'
    | 'CURRENCY'
    | 'CURRENCYUNIT'
    | 'DATE'
    | 'DATETIME'
    | 'DATETIME_BIRTHDAY'
    | 'DECIMAL'
    | 'BIGDECIMAL'
    | 'FLOAT'
    | 'GUID'
    | 'HTMLTEXT'
    | 'INHERIT'
    | 'INT'
    | 'LONGTEXT'
    | 'LONGTEXT_1000'
    | 'NBID'
    | 'NMCODELIST'
    | 'NSCODELIST'
    | 'PICKUP'
    | 'PICKUPDATA'
    | 'PICKUPTEXT'
    | 'SBID'
    | 'SMCODELIST'
    | 'SSCODELIST'
    | 'TEXT'
    | 'TEXT_EMAIL'
    | 'TIME'
    | 'TRUEFALSE'
    | 'VARBINARY'
    | 'WFSTATE'
    | 'YESNO'
    | 'ONE2MANYDATA'
    | 'ONE2MANYDATA_MAP'
    | 'PICKUPOBJECT'
    | 'ONE2ONEDATA'
    | 'FILE'
    | 'ONE2MANYOBJ'
    | 'ONE2MANYOBJ_MAP'
    | 'ONE2ONEOBJ'
    | 'FILELIST'
    | 'LONGFILELIST'
    | 'PICTURE'
    | 'PICTURELIST'
    | 'LONGPICTURELIST'
    | 'TEXTARRAY'
    | 'TEXTARRAY2'
    | 'INTARRAY'
    | 'INTARRAY2'
    | 'BIGINTARRAY'
    | 'BIGINTARRAY2'
    | 'FLOATARRAY'
    | 'FLOATARRAY2'
    | 'DECIMALARRAY'
    | 'DECIMALARRAY2';

  /**
   * 默认属性搜索模式
   *
   * @type {IPSDEFSearchMode}
   */
  getDefaultPSDEFSearchMode(): IPSDEFSearchMode | null;

  /**
   * 默认属性搜索模式
   *
   * @type {IPSDEFSearchMode}
   */
  get defaultPSDEFSearchMode(): IPSDEFSearchMode | null;

  /**
   * 默认属性搜索模式（必须存在）
   *
   * @type {IPSDEFSearchMode}
   */
  getDefaultPSDEFSearchModeMust(): IPSDEFSearchMode;

  /**
   * 默认值
   * @type {string}
   */
  defaultValue: string;

  /**
   * 默认值逻辑
   *
   * @type {IPSDEFLogic}
   */
  getDefaultValuePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 默认值逻辑
   *
   * @type {IPSDEFLogic}
   */
  get defaultValuePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 默认值逻辑（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getDefaultValuePSDEFLogicMust(): IPSDEFLogic;

  /**
   * 默认值类型
   * @description 值模式 [实体属性默认值类型] {SESSION：用户全局对象、 APPLICATION：系统全局对象、 UNIQUEID：唯一编码、 CONTEXT：网页请求、 PARAM：数据对象属性、 OPERATOR：当前操作用户(编号)、 OPERATORNAME：当前操作用户(名称)、 CURTIME：当前时间、 APPDATA：当前应用数据、 EXPRESSION：表达式、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA' | 'EXPRESSION' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  defaultValueType: string | 'SESSION' | 'APPLICATION' | 'UNIQUEID' | 'CONTEXT' | 'PARAM' | 'OPERATOR' | 'OPERATORNAME' | 'CURTIME' | 'APPDATA' | 'EXPRESSION' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 重复值检查
   * @description 值模式 [属性重复值检查模式] {NONE：不检查、 ALL：全部检查、 NOTNULL：非空检查、 CHECKVALUES：指定值范围、 EXCLUDEVALUES：排除值范围 }
   * @type {( string | 'NONE' | 'ALL' | 'NOTNULL' | 'CHECKVALUES' | 'EXCLUDEVALUES')}
   * @default NONE
   */
  dupCheckMode: string | 'NONE' | 'ALL' | 'NOTNULL' | 'CHECKVALUES' | 'EXCLUDEVALUES';

  /**
   * 重复值检查范围属性集合
   *
   * @type {IPSDEField[]}
   */
  getDupCheckPSDEFields(): IPSDEField[] | null;

  /**
   * 重复值检查范围属性集合
   *
   * @type {IPSDEField[]}
   */
  get dupCheckPSDEFields(): IPSDEField[] | null;

  findDupCheckPSDEField(objKey: any): IPSDEField | null;

  getDupCheckValues(): string[] | null;

  get dupCheckValues(): string[] | null;

  /**
   * 导入次序
   * @type {number}
   */
  importOrder: number;

  /**
   * 导入标识
   * @type {string}
   */
  importTag: string;

  /**
   * 逻辑名称语言资源
   *
   * @type {IPSLanguageRes}
   */
  getLNPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 逻辑名称语言资源
   *
   * @type {IPSLanguageRes}
   */
  get lNPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 逻辑名称语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getLNPSLanguageResMust(): IPSLanguageRes;

  /**
   * 字段长度
   * @type {number}
   * @default 0
   */
  length: number;

  /**
   * 逻辑名称
   * @type {string}
   */
  logicName: string;

  /**
   * 最大值（字符串）
   * @type {string}
   */
  maxValueString: string;

  /**
   * 最小字符串长度
   * @type {number}
   * @default 0
   */
  minStringLength: number;

  /**
   * 最小值（字符串）
   * @type {string}
   */
  minValueString: string;

  /**
   * 数据空值排序模式
   * @description 值模式 [数据库空值排序] {FIRST：最先、 LAST：最后 }
   * @type {( string | 'FIRST' | 'LAST')}
   */
  nullValueOrderMode: string | 'FIRST' | 'LAST';

  /**
   * 值变更逻辑
   *
   * @type {IPSDEFLogic}
   */
  getOnChangePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值变更逻辑
   *
   * @type {IPSDEFLogic}
   */
  get onChangePSDEFLogic(): IPSDEFLogic | null;

  /**
   * 值变更逻辑（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getOnChangePSDEFLogicMust(): IPSDEFLogic;

  /**
   * 属性代码表
   *
   * @type {IPSCodeList}
   */
  getPSCodeList(): IPSCodeList | null;

  /**
   * 属性代码表
   *
   * @type {IPSCodeList}
   */
  get psCodeList(): IPSCodeList | null;

  /**
   * 属性代码表（必须存在）
   *
   * @type {IPSCodeList}
   */
  getPSCodeListMust(): IPSCodeList;

  /**
   * 实体数据表对象
   *
   * @type {IPSDEDBTable}
   */
  getPSDEDBTable(): IPSDEDBTable | null;

  /**
   * 实体数据表对象
   *
   * @type {IPSDEDBTable}
   */
  get psDEDBTable(): IPSDEDBTable | null;

  /**
   * 实体数据表对象（必须存在）
   *
   * @type {IPSDEDBTable}
   */
  getPSDEDBTableMust(): IPSDEDBTable;

  /**
   * 关系数据库列对象
   *
   * @type {IPSSysDBColumn}
   */
  getPSSysDBColumn(): IPSSysDBColumn | null;

  /**
   * 关系数据库列对象
   *
   * @type {IPSSysDBColumn}
   */
  get psSysDBColumn(): IPSSysDBColumn | null;

  /**
   * 关系数据库列对象（必须存在）
   *
   * @type {IPSSysDBColumn}
   */
  getPSSysDBColumnMust(): IPSSysDBColumn;

  /**
   * 系统值序列
   *
   * @type {IPSSysSequence}
   */
  getPSSysSequence(): IPSSysSequence | null;

  /**
   * 系统值序列
   *
   * @type {IPSSysSequence}
   */
  get psSysSequence(): IPSSysSequence | null;

  /**
   * 系统值序列（必须存在）
   *
   * @type {IPSSysSequence}
   */
  getPSSysSequenceMust(): IPSSysSequence;

  /**
   * 系统值转换器
   *
   * @type {IPSSysTranslator}
   */
  getPSSysTranslator(): IPSSysTranslator | null;

  /**
   * 系统值转换器
   *
   * @type {IPSSysTranslator}
   */
  get psSysTranslator(): IPSSysTranslator | null;

  /**
   * 系统值转换器（必须存在）
   *
   * @type {IPSSysTranslator}
   */
  getPSSysTranslatorMust(): IPSSysTranslator;

  /**
   * 数据精度
   * @type {number}
   * @default 0
   */
  precision: number;

  /**
   * 预置业务类型
   * @description 值模式 [属性预定义属性类型] {NONE：（非预置属性）、 LOGICVALID：逻辑有效标识、 ORDERVALUE：排序值、 VERSION：数据版本、 CREATEMAN：建立人标识、 CREATEMANNAME：建立人名称、 CREATEDATE：建立时间、 UPDATEMAN：更新人标识、 UPDATEMANNAME：更新人名称、 UPDATEDATE：更新时间、 ORGID：组织机构标识、 ORGNAME：组织机构名称、 ORGSECTORID：部门标识、 ORGSECTORNAME：部门名称、 PARENTTYPE：动态父类型、 PARENTID：动态父标识、 PARENTNAME：动态父名称、 PARENTIDPATH：父标识路径、 PARENTNAMEPATH：父名称路径、 TIMESTAMP：时间戳、 DYNASTORAGE：动态存储 }
   * @type {( string | 'NONE' | 'LOGICVALID' | 'ORDERVALUE' | 'VERSION' | 'CREATEMAN' | 'CREATEMANNAME' | 'CREATEDATE' | 'UPDATEMAN' | 'UPDATEMANNAME' | 'UPDATEDATE' | 'ORGID' | 'ORGNAME' | 'ORGSECTORID' | 'ORGSECTORNAME' | 'PARENTTYPE' | 'PARENTID' | 'PARENTNAME' | 'PARENTIDPATH' | 'PARENTNAMEPATH' | 'TIMESTAMP' | 'DYNASTORAGE')}
   */
  predefinedType:
    | string
    | 'NONE'
    | 'LOGICVALID'
    | 'ORDERVALUE'
    | 'VERSION'
    | 'CREATEMAN'
    | 'CREATEMANNAME'
    | 'CREATEDATE'
    | 'UPDATEMAN'
    | 'UPDATEMANNAME'
    | 'UPDATEDATE'
    | 'ORGID'
    | 'ORGNAME'
    | 'ORGSECTORID'
    | 'ORGSECTORNAME'
    | 'PARENTTYPE'
    | 'PARENTID'
    | 'PARENTNAME'
    | 'PARENTIDPATH'
    | 'PARENTNAMEPATH'
    | 'TIMESTAMP'
    | 'DYNASTORAGE';

  /**
   * 查询选项
   * @description 值模式 [实体属性字段查询扩展选项] {LIKE：LIKE大小写敏感、 =：=（含其它）大小写敏感、 LIKESPLIT：LIKE分解 }
   * @type {( string | 'LIKE' | '=' | 'LIKESPLIT')}
   */
  queryOption: string | 'LIKE' | '=' | 'LIKESPLIT';

  /**
   * 值序列使用模式
   * @description 值模式 [属性值序列使用模式] {NONE：无、 GETDRAFT：草稿、 CREATE：建立、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'NONE' | 'GETDRAFT' | 'CREATE' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   * @default NONE
   */
  sequenceMode: string | 'NONE' | 'GETDRAFT' | 'CREATE' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 服务代码标识
   * @type {string}
   */
  serviceCodeName: string;

  /**
   * 标准数据类型
   * @description 值模式 [属性标准数据类型] {0：UNKNOWN、 1：BIGINT、 2：BINARY、 3：BIT、 4：CHAR、 5：DATETIME、 6：DECIMAL、 7：FLOAT、 8：IMAGE、 9：INT、 10：MONEY、 11：NCHAR、 12：NTEXT、 13：NVARCHAR、 14：NUMERIC、 15：REAL、 16：SMALLDATETIME、 17：SMALLINT、 18：SMALLMONEY、 19：SQL_VARIANT、 20：SYSNAME、 21：TEXT、 22：TIMESTAMP、 23：TINYINT、 24：VARBINARY、 25：VARCHAR、 26：UNIQUEIDENTIFIER、 27：DATE、 28：TIME、 29：BIGDECIMAL }
   * @type {( number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29)}
   */
  stdDataType: number | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29;

  /**
   * 字符串转化
   * @description 值模式 [属性字符串转换模式] {UCASE：转换为大写、 LCASE：转换为小写、 PASSWORD：密码模式、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'UCASE' | 'LCASE' | 'PASSWORD' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  stringCase: string | 'UCASE' | 'LCASE' | 'PASSWORD' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 最大字符串长度
   * @type {number}
   * @default 0
   */
  stringLength: number;

  /**
   * 值转换器使用模式
   * @description 值模式 [属性值转换使用模式] {NONE：无、 DIGEST：密码、 ENCRYPT：加密、 TRANSLATE：转换器处理、 TRANSLATE2：转换器处理（双向）、 UCASE：转换为大写、 LCASE：转换为小写、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'NONE' | 'DIGEST' | 'ENCRYPT' | 'TRANSLATE' | 'TRANSLATE2' | 'UCASE' | 'LCASE' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   * @default NONE
   */
  translatorMode: string | 'NONE' | 'DIGEST' | 'ENCRYPT' | 'TRANSLATE' | 'TRANSLATE2' | 'UCASE' | 'LCASE' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 联合键值属性
   * @description 值模式 [云属性联合键值] {KEY1：联合键值1、 KEY2：联合键值2、 KEY3：联合键值3、 KEY4：联合键值4、 KEY5：联合键值5、 KEY6：联合键值6、 KEY7：联合键值7、 KEY8：联合键值8 }
   * @type {( string | 'KEY1' | 'KEY2' | 'KEY3' | 'KEY4' | 'KEY5' | 'KEY6' | 'KEY7' | 'KEY8')}
   */
  unionKeyValue: string | 'KEY1' | 'KEY2' | 'KEY3' | 'KEY4' | 'KEY5' | 'KEY6' | 'KEY7' | 'KEY8';

  /**
   * 用户自定义逻辑2
   *
   * @type {IPSDEFLogic}
   */
  getUser2PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑2
   *
   * @type {IPSDEFLogic}
   */
  get user2PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑2（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getUser2PSDEFLogicMust(): IPSDEFLogic;

  /**
   * 用户自定义逻辑3
   *
   * @type {IPSDEFLogic}
   */
  getUser3PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑3
   *
   * @type {IPSDEFLogic}
   */
  get user3PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑3（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getUser3PSDEFLogicMust(): IPSDEFLogic;

  /**
   * 用户自定义逻辑4
   *
   * @type {IPSDEFLogic}
   */
  getUser4PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑4
   *
   * @type {IPSDEFLogic}
   */
  get user4PSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑4（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getUser4PSDEFLogicMust(): IPSDEFLogic;

  /**
   * 用户自定义逻辑
   *
   * @type {IPSDEFLogic}
   */
  getUserPSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑
   *
   * @type {IPSDEFLogic}
   */
  get userPSDEFLogic(): IPSDEFLogic | null;

  /**
   * 用户自定义逻辑（必须存在）
   *
   * @type {IPSDEFLogic}
   */
  getUserPSDEFLogicMust(): IPSDEFLogic;

  /**
   * 值格式化
   * @type {string}
   */
  valueFormat: string;

  /**
   * 值项属性
   *
   * @type {IPSDEField}
   */
  getValuePSDEField(): IPSDEField | null;

  /**
   * 值项属性
   *
   * @type {IPSDEField}
   */
  get valuePSDEField(): IPSDEField | null;

  /**
   * 值项属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getValuePSDEFieldMust(): IPSDEField;

  /**
   * 查询列级别
   * @type {number}
   * @default 1
   */
  viewLevel: number;

  /**
   * 允许空值输入
   * @type {boolean}
   * @default true
   */
  allowEmpty: boolean;

  /**
   * 检查递归
   * @type {boolean}
   * @default false
   */
  checkRecursion: boolean;

  /**
   * 数据类型属性
   * @type {boolean}
   * @default false
   */
  dataTypeDEField: boolean;

  /**
   * 动态存储属性
   * @type {boolean}
   * @default false
   */
  dynaStorageDEField: boolean;

  /**
   * 支持审计
   * @type {boolean}
   * @default false
   */
  enableAudit: boolean;

  /**
   * 支持建立
   * @type {boolean}
   * @default true
   */
  enableCreate: boolean;

  /**
   * 数据库自动产生值
   * @type {boolean}
   * @default false
   */
  enableDBAutoValue: boolean;

  /**
   * 支持修改
   * @type {boolean}
   * @default true
   */
  enableModify: boolean;

  /**
   * 支持字段权限
   * @type {boolean}
   * @default false
   */
  enablePrivilege: boolean;

  /**
   * 支持快速搜索
   * @type {boolean}
   * @default false
   */
  enableQuickSearch: boolean;

  /**
   * 支持界面建立
   * @type {boolean}
   * @default true
   */
  enableUICreate: boolean;

  /**
   * 支持界面修改
   * @type {boolean}
   * @default true
   */
  enableUIModify: boolean;

  /**
   * 公式属性
   * @type {boolean}
   */
  formulaDEField: boolean;

  /**
   * 索引类型属性
   * @type {boolean}
   * @default false
   */
  indexTypeDEField: boolean;

  /**
   * 继承属性
   * @type {boolean}
   */
  inheritDEField: boolean;

  /**
   * 主键属性
   * @type {boolean}
   * @default false
   */
  keyDEField: boolean;

  /**
   * 键名属性
   * @type {boolean}
   * @default false
   */
  keyNameDEField: boolean;

  /**
   * 链接属性
   * @type {boolean}
   * @default false
   */
  linkDEField: boolean;

  /**
   * 主属性
   * @type {boolean}
   * @default false
   */
  majorDEField: boolean;

  /**
   * 多表单识别属性
   * @type {boolean}
   * @default false
   */
  multiFormDEField: boolean;

  /**
   * 拷贝重置
   * @type {boolean}
   * @default false
   */
  pasteReset: boolean;

  /**
   * 物理属性
   * @type {boolean}
   * @default true
   */
  phisicalDEField: boolean;

  /**
   * 查询列
   * @type {boolean}
   * @default true
   */
  queryColumn: boolean;

  /**
   * 系统属性
   * @type {boolean}
   * @default false
   */
  systemReserver: boolean;

  /**
   * 界面辅助属性
   * @type {boolean}
   * @default false
   */
  uIAssistDEField: boolean;

  /**
   * 唯一业务标识属性
   * @type {boolean}
   * @default false
   */
  uniTagField: boolean;
}
